import Vue from 'vue';
import VueRouter from 'vue-router';
import HomeView from '../views/Home.vue';
import store from '@/store';

Vue.use(VueRouter);

const routes = [
    {
        path: '/',
        redirect: '/home',
    },
    {
        path: '/home',
        name: 'home',
        component: HomeView,
    },
    {
        path: '/goods',
        name: 'goods',
        component: () => import('../views/Goods.vue'),
    },
    {
        path: '/user',
        name: 'user',
        redirect: '/user/cart',
        component: () => import('../views/User.vue'),
        /*         // beforeEnter: (to, from, next) => {
        //     let token = localStorage.getItem('x-auth-token');
        //     if (token) {
        //         next();
        //     } else {
        //         // 弹出提示框
        //         store.dispatch('showToast/asyncShowToast', {
        //             isShow: true,
        //             title: '请先登录!',
        //             type: 'warning',
        //         });
        //     }
        // }, */
        // 购物车页面配置
        children: [{ path: 'cart', component: () => import('../components/user/Cart.vue') }],
    },
    {
        path: '/order',
        name: 'order',
        component: () => import('../views/Order.vue'),
    },
    {
        path: '/free',
        name: 'free',
        component: () => import('../views/Free.vue'),
    },
    {
        path: '/details',
        name: 'details',
        component: () => import('../views/Details.vue'),
    },
    {
        path: '*',
        component: () => import('../components/Error.vue'),
    },
];

const router = new VueRouter({
    mode: 'history',
    base: process.env.BASE_URL,
    routes,
});
// 全局前置守卫
// 需求: 打开个人中心页面需要先登录才能打开
/* router.beforeEach((to, from, next) => {
    if (to.path == '/user') {
        let token = localStorage.getItem('x-auth-token');
        if (token) {
            next();
        } else {
            // 弹出提示框
            store.dispatch('showToast/asyncShowToast', {
                isShow: true,
                title: '请先登录!',
                type: 'warning',
            });
        }
    } else {
        next();
    }
}); */
// 解决路由重复点击bug
const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function (location) {
    return originalPush.call(this, location).catch((err) => {});
};
export default router;
